package cn.tedu.xuecha.service.impl;



import cn.tedu.xuecha.ex.ServiceException;
import cn.tedu.xuecha.mapper.ContentMapper;
import cn.tedu.xuecha.pojo.dto.ContentAddNewDTO;
import cn.tedu.xuecha.pojo.entity.Content;
import cn.tedu.xuecha.pojo.vo.ContentListItemVO;
import cn.tedu.xuecha.pojo.vo.ContentStandardVO;
import cn.tedu.xuecha.service.IContentService;
import cn.tedu.xuecha.web.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Iterator;
import java.util.List;

/**
 * 处理内容表数据的业务实现类
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
@Service
public class ContentServiceImpl implements IContentService {

    @Autowired
    ContentMapper contentMapper;



    @Override
    public void addNew(ContentAddNewDTO contentAddNewDTO) {
        log.debug("开始处理【添加内容表】的业务，参数：{}", contentAddNewDTO);
        
        // 创建Content对象
        Content content = new Content();
        // 通过BeanUtils.copyProperties()方法将参数对象的各属性值复制到Admin对象中
        BeanUtils.copyProperties(contentAddNewDTO, content);
        content.setCategoryId(contentAddNewDTO.getCategoryId());
        content.setEditor(contentAddNewDTO.getEditor());
        content.setTitle(contentAddNewDTO.getTitle());
        content.setBrief(contentAddNewDTO.getBrief());
        content.setKeywords(contentAddNewDTO.getKeywords());
        content.setSort(contentAddNewDTO.getSort());
        content.setCoverUrl(content.getCoverUrl());
        content.setMediaType(contentAddNewDTO.getMediaType());
        content.setMediaUrl(content.getMediaUrl());
        content.setCreateUserName(content.getCreateUserName());
       //TODO  添加具体的信息待补充
        log.debug("即将插入内容表数据，参数：{}", content);
        int rows = contentMapper.insert(content);
        // 判断插入数据的结果是否符合预期
        if (rows != 1) {
            String message = "添加内容表失败，服务器忙，请稍后再次尝试！";
            log.warn(message);
            throw new ServiceException(ServiceCode.ERR_INSERT, message);
        }


    }

    @Override
    public void delete(Integer id) {
        ContentStandardVO contentStandardVO = contentMapper.getStandardById(id);
        if (contentStandardVO == null){
            String message = "删除内容表失败，id为："+id+"的内容表不存在";
            log.debug(message);
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,message);
        }
        log.debug("开始处理 删除内容表操作");
        int row = contentMapper.deleteById(id);
        if(row != 1){
            throw new ServiceException(ServiceCode.ERR_DELETE,"服务器忙");
        }
    }

      public void update(Content content) {

        // 检查尝试访问的数据是否存在
        ContentStandardVO queryResult = contentMapper.getStandardById(content.getId());
        if (queryResult == null) {
            String message =  "更新内容表失败，尝试访问的数据不存在！";
            log.debug(message);
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND, message);
        }

        int rows = contentMapper.update(content);
        if (rows != 1) {
            String message = "更新内容表失败，服务器忙，请稍后再次尝试！";
            log.warn(message);
            throw new ServiceException(ServiceCode.ERR_UPDATE, message);
        }
    }
    @Override
    public List<ContentListItemVO> list() {
        log.debug("开始处理【查询内容表列表】的业务，无参数");
        List<ContentListItemVO> list = contentMapper.list();
        return list;
    }
}
